%% fig3.m
% 用于复现论文中 Fig. 3：展示不同初始条件下的忆阻器滞回曲线
% 当 A = 5 V 时，分别在 F = 0.5 Hz 和 F = 0.25 Hz 下对比初始值 ϕ(0)=5 和 ϕ(0)=-5 的效果

clear; clc; close all;

% 固定参数
a = 0;
b = 1;
A = 5;            % 固定幅值 5 V
numCycles = 5;    % 取 1 个周期用于绘图

% 两个不同的初始条件
phi0_values = [5, -5];
% 两个不同的激励频率
F_values = [0.5, 0.25];

% 新建图窗，采用 subplot 分别绘制不同频率下的滞回曲线
figure;

for i = 1:length(F_values)
    F = F_values(i);
    tspan = [0, numCycles*(1/F)]; % 根据频率确定时间范围
    
    subplot(1,2,i);
    hold on;
    
    % 针对两种初始值分别进行仿真并绘图
    for j = 1:length(phi0_values)
        phi0 = phi0_values(j);
        [t, phi, Vt, It] = memristor(a, b, A, F, phi0, tspan);
        plot(Vt, It, 'LineWidth',1.5);
    end
    
    xlabel('电压 V (V)');
    ylabel('电流 I (A)');
    legend('ϕ(0)=5','ϕ(0)=-5','Location','best');
    title(['A = 5 V, F = ', num2str(F), ' Hz']);
    grid on;
    axis equal;
    hold off;
end

sgtitle('不同初值下的双稳态滞回曲线');
